
/* 商品详情仓库 */

/* 引入axios的api */
import { reqGoodsInfo } from "@/api"
import {reqAddOrUpdateShopCart} from "@/api"
/* 封装一个游客身份的模块，生成一个随机字符串，不能改变 */
import {getUUID} from "@/utils/uuid_token"
const actions ={
    /* 获取产品信息的axtions */
    async getGoodInfo({commit},skuId){
        let result= await reqGoodsInfo(skuId)
        if(result.code==200){
            commit('GETGOODINFO',result.data)
        }
    },
    /* 将产品添加到购物车当中 */
    async addOrUpdateShopCart({commit},{skuId,skuNum}){
        /* 加入购物车返回的结果  加入购物车之后 服务器写入数据库成功并没有返回其他数据 只返回了一个code为200表示这次操作的成功 因为服务器没返回数据 因此不需要存储数据 */
       let result= await reqAddOrUpdateShopCart(skuId,skuNum)
       /* 当前的这个函数如果执行 返回的是一个promise 要么成功要么失败   如果result.code==200 那么就给它返回成功的结果只要是非空字符串即可 否则返回失败的结果 promise.reject */
       if(result.code ==200){
        return 'ok'
       }else{
        /* 这个掉膘加入购物车失败 */
        return Promise.reject(new Error('faile'))
       }
    }
}

const mutations = {
    /* 把产品信息对象存入state */
    GETGOODINFO(state,goodInfo){
        state.goodInfo=goodInfo
    }
}

const getters={
    /* 路径导航简化 */
    categoryView(state){
        /* 假如服务器没收到数据 空对象的categoryView是undefined  所以需要一个||{} 使它未收到值默认返回空对象 */
        return state.goodInfo.categoryView||{}
    },
    /* 产品信息简化 */
    skuInfo(state){
        return state.goodInfo.skuInfo||{}
    },
    /* 产品售卖属性的简化 */
    spuSaleAttrList(state){
        return state.goodInfo.spuSaleAttrList||[]
    }

}

const state={
    goodInfo:{},
    uuid_token:getUUID()
}

export default{
    actions,
    mutations,
    getters,
    state
}